//Copyright 2012 Trevin Liberty
//GNU GPL v3
//Author: Trevin Liberty
#ifndef A_STAR_STRUCTS_H
#define A_STAR_STRUCTS_H

#include "../../Point.h"

#include <vector>

using std::vector;

class Entity;

struct PathingQueueEntry {
	Entity* e;
	Point<int> dest;
	Point<int> start;
};

struct Thread_Queue_In {
	ALLEGRO_MUTEX *mutex;
	ALLEGRO_COND *cond;
	list<PathingQueueEntry*>* queue;
};

struct CompletedPath {
	list<Point<int>>* path;
	Entity* e;
};

struct Thread_Queue_Out {
	ALLEGRO_MUTEX *mutex;
	ALLEGRO_COND *cond;
	vector<CompletedPath*>* queue;
};

#endif